Skip to content

fix(mobile): prevent linked account header overlap - #4946

Merged
iscekic merged 4 commits into
mainfrom
profile-linked-accounts-6d55
Aug 3, 2026
Merged

fix(mobile): prevent linked account header overlap#4946
iscekic merged 4 commits into
mainfrom
profile-linked-accounts-6d55

Conversation

@iscekic

@iscekic iscekic commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Remove the Linked accounts section's LinearTransition and render its container as a plain View.
  • This prevents stale-position animation when Organization or other sections above mount or resize asynchronously, which caused a transient header overlap.
  • Keep the existing opacity-only loading and row fades. This screen deliberately skips the usual layout-transition pattern because cross-section position animation creates visible overlap during async layout shifts.

Verification

  • pnpm format && pnpm typecheck && pnpm lint && pnpm check:unused && pnpm test (from apps/mobile/; 296 files / 2578 tests)
  • iOS E2E: cold-launch bounds (4 dual-header samples, no violations); three Personal → E2E Org mount races with hot bounds sampling and frame inspection; settled order Credits → Agents → Organization → Linked accounts → Appearance → Notifications; Email and Fake-Login rows below the Linked accounts header.

Visual Changes

Before After
Round 0 was skipped because no simulator was available during the pristine-tree attempt. Picker-driven Organization mount race, 0.2s frame — no header overlap.

race

Settled Profile layout with Organization and Linked accounts stacked cleanly.

settled

Reviewer Notes

  • The exception is scoped to the outer Linked accounts section only. The Credits card's inner LinearTransition remains unchanged because it is inside a fixed-height container.
  • E2E verification used the deterministic picker-driven mount race instead of an artificial network delay; per-frame and bounds evidence showed no overlap.

@iscekic iscekic self-assigned this Aug 1, 2026
@kilo-code-bot

kilo-code-bot Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

Incremental review found no new PR content since the previous review: the only new commits are an empty retrigger commit and a main merge, so the single-file mobile layout-animation change remains unchanged and clean.

Files Reviewed (1 file)
  • apps/mobile/src/components/profile-screen.tsx
Verification notes
  • gh pr diff for PR fix(mobile): prevent linked account header overlap #4946 still touches only apps/mobile/src/components/profile-screen.tsx; git diff d1bb457..dcd48f2 -- apps/mobile/src/components/profile-screen.tsx is empty, so no changed lines require re-review.
  • Re-verified at HEAD dcd48f2: LinearTransition is no longer imported (line 19) and has no remaining references; Animated, FadeOut (line 241), and FadeIn (line 262) are still used, so no unused import or undefined reference.
  • View is imported from react-native (line 17), so the plain-View container at lines 235/274 resolves correctly, and the section render guard at line 234 is unchanged, preserving visibility behavior.
  • Reanimated entering/exiting animations on child Animated.Views do not require an animated parent; the only residual effect is that the container height no longer animates during the 150ms skeleton fade-out, which is cosmetic.
  • No listeners, timers, subscriptions, or retained references were added, so no new memory-leak surface. No Markdown documentation files are touched, so the image-format rule does not apply.
  • Not verified in this review: the iOS E2E bounds/frame evidence in the PR description, which cannot be reproduced in a read-only environment.
Previous Review Summaries (2 snapshots, latest commit d1bb457)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit d1bb457)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Single-file mobile UI change replacing the Linked accounts Animated.View layout transition with a plain View; imports, remaining FadeIn/FadeOut usage, and the section render guard all remain consistent, with no correctness, security, performance, or leak risk identified.

Files Reviewed (1 file)
  • apps/mobile/src/components/profile-screen.tsx
Verification notes
  • LinearTransition was dropped from the react-native-reanimated import (line 19) and has no remaining references in the file, so there is no unused-import or undefined-reference risk. Animated, FadeOut (skeleton exit, line 241), and FadeIn (provider row entrance, line 262) are still used.
  • View is already imported from react-native (line 17), so the replaced container resolves correctly.
  • Reanimated entering/exiting animations on the child Animated.Views do not require an animated parent; converting the wrapper to a plain View only removes position/size animation of the container itself.
  • The conditional guard and children are unchanged, so section visibility behavior is preserved. No listeners, timers, or retained references were added, so no new memory-leak surface.
  • Documented deviation from the app guide's LinearTransition convention is intentional and explained inline (lines 231-233); the only residual effect is that the container height no longer animates during the 150ms skeleton fade-out, which is cosmetic and not flagged.
  • Not verified in this review: the iOS E2E and per-frame overlap evidence described in the PR description, which cannot be reproduced in a read-only environment.

Previous review

Status: No Issues Found | Recommendation: Merge

Executive Summary

Single-file mobile UI change that replaces the Linked accounts Animated.View layout transition with a plain View; imports and remaining FadeIn/FadeOut usages stay consistent, and no correctness, security, or leak risks were identified.

Files Reviewed (1 file)
  • apps/mobile/src/components/profile-screen.tsx
Verification notes
  • LinearTransition was removed from the import list and has no remaining references in this file; Animated, FadeIn, and FadeOut are still used (skeleton exit at line 241, provider row entrance at line 259), so no unused-import or undefined-reference risk.
  • The conditional render guard and children are unchanged, so section visibility behavior is preserved.
  • The deviation from the app guide's "use LinearTransition where layout would jump" convention is intentional and documented inline; one residual cosmetic effect is that during the skeleton's 150ms FadeOut the parent no longer animates height, so provider rows can appear without a smooth reflow. This is cosmetic only and not flagged as a defect.
  • Not verified in this review: the PR's iOS E2E checklist item is still unchecked and the before/after visual evidence is a placeholder.

Reviewed by claude-opus-5 · Input: 22 · Output: 2.8K · Cached: 380.4K

Review guidance: REVIEW.md from base branch main

@iscekic iscekic added the human-ready The PR is ready for human review. label Aug 1, 2026
@iscekic
iscekic merged commit 62bbeff into main Aug 3, 2026
21 checks passed
@iscekic
iscekic deleted the profile-linked-accounts-6d55 branch August 3, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants